<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    // 数组降维
    // 写一个函数,接收一个数组作为参数,返回结果为已经降维的数组
    // 如下这个数组经过函数的处理侯得到[1,2,3,4,5]这个结果
    const arr = [1, [[2], [3, [4]], 5]]
    // const arr = [1, [2, 3]]

    console.log(Object.prototype.toString.call(arr))
    // 初始写法
    // const newArr = []
    // function reduce(arr) {
    //   arr.forEach(item => {
    //     if (Object.prototype.toString.call(item) === '[object Array]') {
    //       reduce(item)
    //     } else {
    //       newArr.push(item)
    //     }
    //   })
    // }
    // reduce(arr)
    // console.log(newArr)

    // 三元表达式
    function reduce(arr) {
      const newArr = []
      arr.forEach(item => Object.prototype.toString.call(item) === '[object Array]' ? newArr.push(...reduce(item)) : newArr.push(item))
      return newArr
    }
    console.log(reduce(arr))

    // 网上参考，非自写
    // const newArr = arr => arr.reduce((pre, cur) => pre.concat(Array.isArray(cur) ? newArr(cur) : cur), [])
    // console.log(newArr(arr))



  </script>
</body>

</html>